#selenium 自动化web浏览器 练习2
import json
import time
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
#创建一个设置好的webdriver对象
def new_web():
    # 创建option对象
    option = Options()
    # 保持浏览器打开状态(默认代码执行完毕浏览器关闭)
    option.add_experimental_option("detach", True)
    # 创建webdriver对象
    return webdriver.ChromiumEdge(service=Service('C:\CodeMake\Python\EdgeExtension\edgedriver_win64\msedgedriver.exe'), options=option)
def start(url):
    browser = new_web()
    # 打开一个网页
    browser.get(url)
    # 浏览器最大化
    browser.maximize_window()
    # 元素定位隐形等待 等网页加载完成在执行定位,()内写等待最大时间,一但网页加载完毕就会立刻执行
    browser.implicitly_wait(5)
    #现在网页手动登录获取cookie,在保存以之后自动登录
    # cookies = browser.get_cookies()
    # with open(f'cookies_1.txt', 'w') as f:
    #     f.write(json.dumps(cookies, ensure_ascii=True))
    #自动登录加改变cookie保存时间
    with open(f'cookies_1.txt', 'r') as f:
        cookies = json.load(f)
        new_expiry_time = int(time.time()) + 30 * 24 * 60 * 60
    for cookie in cookies:
        if 'expiry' in cookie:
            cookie['expiry'] = new_expiry_time
        browser.add_cookie(cookie)
    browser.refresh()
    browser.implicitly_wait(5)
    # comment = browser.find_element(By.CLASS_NAME,"webcast-chatroom___input-container")
    # comment = browser.find_element(By.CLASS_NAME,"ace-line")
    # 弹幕编辑元素
    comment = browser.find_element(By.CSS_SELECTOR, ".ace-line>span")
    # 编辑弹幕
    comment.send_keys("好看")
    browser.implicitly_wait(5)
    # 弹幕发送按钮
    commit = browser.find_element(By.CSS_SELECTOR, "#chatInput>svg")
    # 发送弹幕
    commit.click()
live_id = "761672711998"
url = f"https://live.douyin.com/{live_id}"
start(url)

# #元素清空
# search.clear()
# #获取所有标签页句柄
# taps = browser.window_handles
# print(taps)
# time.sleep(2)
# #通过句柄切换标签页
# browser.close()
# browser.switch_to.window(taps[1])
# time.sleep(2)
# #获取当前标签页句柄
# tap = browser.current_window_handle
# print(tap)
#退出浏览器
# browser.quit()
#点击弹窗确定按钮
#browser.switch_to.alert.accept()
#获取弹窗内容
# browser.switch_to.alert.text
#查看获取嵌套网页
#先获得iframe元素
#通过 browser.switch_to.iframe(iframe元素) 进入嵌套网页
#退出嵌套页面 browser.switch_to.default_content() 返回默认网页 从哪进入的嵌套网页返回到哪
#网页前进与后退
#browser.back() 后退 browser.forward() 前进
#打印页面标题
# browser.title
#打印当前页url
# browser.current_url